package cn.cj.erp.common.utils.encrypt;

import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SmUtil;

/**
 * 解密工具类（内部使用国密加解密工具）
 *
 * @author chenjian
 */
public class EncryptUtil {
    /**
     * 加密数据
     * @param data 数据明文
     * @return 数据密文
     */
    public static String encrypt(String data) {
        if (StrUtil.isBlank(data)) {
            return data;
        }
        return Sm4Util.encrypt(data);
    }

    /**
     * 解密数据
     * @param data 数据密文
     * @return 数据明文
     */
    public static String decrypt(String data) {
        if (StrUtil.isBlank(data)) {
            return data;
        }
        return Sm4Util.decrypt(data);
    }

    /**
     * 加密字段对应的搜索字段加密处理
     * @param str 明文
     * @return 搜索字段密文
     */
    public static String searchEncrypt(String str) {
        if (StrUtil.isEmpty(str)) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= str.length(); i++) {
            sb.append(DesUtil.encrypt(str.substring(i-1,i), DesUtil.DEFAULT_KEY));
        }
        return sb.toString();
    }

    /**
     * 密码加密处理
     * @param password 密码明文
     * @return 计算密码摘要
     */
    public static String passwordEncrypt(String password) {
        if (StrUtil.isBlank(password)) {
            return password;
        }
        return SmUtil.sm3(password);
    }
}
